/**
 * 正则表达式帮助类 对象
 */
export const Regexp_Utils = {
    phone: /^1[3-9]\d{9}$/,     // 手机号
    tel: /^\d*-?\d*$/,          //电话
    idCard: /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}[0-9Xx]$/, // 身份证
    mail: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, // 邮箱
}


// 手机号码掩码处理
export const coverPhone = (phone: string, option: { prefix?: string, needPrefix?: boolean } = { prefix: '+86 ', needPrefix: false }) => {
    if (Regexp_Utils.phone.test(phone)) {
        const coveredPhone = phone.slice(0, 3) + '*'.repeat(4) + phone.slice(-4);
        return option.needPrefix ? option.prefix + coveredPhone : coveredPhone;
    }
    return `不合法手机号`;
}


/**
 * 获取随机数，如果是浏览器环境可以使用 window.Crypto.getRandomValues(), 参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Crypto/getRandomValues
 * @param len 随机数的位数
 * @returns 获取随机数
 */
export const getRandomNumber = (len: number = 5) => Math.floor(Math.random() * Math.pow(10, len));


/**
 * 根据时间戳+随机数获取随机字符串，也可以考虑使用Symbol
 * @param len 随机数长度
 * @param seprator 分割符号
 * @returns 随机字符串
 */
export const getRandomDateString = (len: number = 3, seprator: string = '_') => `${Date.now()}${seprator}${getRandomNumber(len)}`;





